Subject: DLSw Version 0.16 Chapter 7 (1 of 2)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Thu, 22 Dec 94 10:34:50 PST

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 3
X-Sun-Content-Length: 68

This is overall part 10 of 12

This is part 1 of 2 for Chapter 7

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw7a.txt
X-Sun-Content-Lines: 496
X-Sun-Content-Length: 17476

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

7. Capabilities Exchange Formats/Protocol

   The Data Link Switching Capabilities Exchange is a special DLSw Switch-
   to-Switch control message that describes the capabilities of the sending
   data link switch. This control message is sent after the switch-to-
   switch connection is established and optionally during run time if
   certain operational parameters have changed and need to be communicated
   to the partner switch.

   The actual contents of the Capabilities Exchange is in the data field
   following the SSP message header.  The Capabilities Exchange itself is
   formatted as a single General Data Stream (GDS) Variable with multiple
   type "LT" structured subfields.

   The SSP Message Header has the following fields set for the Capabilities
   Exchange:

   Offset   Field                 Value
   ------   -----                 -----
   0x00     Version Number        0x31
   0x01     Header Length         0x48 (decimal 72)
   0x02     Message Length        same as LL in GDS Variable
   0x14     Message Type          0x20 (CAP_EXCHANGE)
   0x16     Protocol Id           0x42
   0x17     Header Number         0x01
   0x23     Message Type          0x20 (CAP_EXCHANGE)
   0x38     Direction             0x01 for CapEx request
                                  0x02 for CapEx response

   Other fields in the SSP header are not referenced and should be set to
   zero.

   The DLSw Capabilities Exchange Request has the following overall format:

   +----+----+-----------------+
   | LL | ID | Control Vectors |
   +----+----+-----------------+

   0-1         Length, in binary, of the DLSw Capabilities
               Exchange
               Request GDS Variable.  The value of LL is
               the sum of the length of all fields in the
               GDS Variable (i.e. length of LL + length of ID
               + length of Control Vectors).

   2-3         GDS Id: 0x1520

   4-n         Control Vectors consisting of type LT structured
               subfields (i.e. the DLSw Capabilities Exchange
               Structured Subfields)

   Type LT structured subfields consist of a 1-byte length field (the "L"),
   a 1-byte type field (the "T") and n-bytes of data.  The length field

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 62]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   includes itself as well as the structured subfield.  The structured
   subfield consists of the type field and data so the length is n + 2.
   This imposes a length restriction of 253 bytes on all data contained in
   a structured subfield.

7.1. Control Vector Id Range

   Control Vector identifiers (i.e. Type) in the range of 0x80 through 0xCF
   are reserved for use by the Data Link Switching standard.

   Control Vector identifiers (i.e. Type) in the range of 0xD0 through 0xFD
   are used for vendor-specific purposes.

   Currently defined vectors are:

     Vector Description                 Hex Value

     Vendor Id Control Vector           0x81
     DLSw Version Control Vector        0x82
     Initial Pacing Window Control Vector    0x83
     Version String Control Vector      0x84
     Mac Address Exclusivity Control Vector  0x85
     Supported SAP List Control Vector  0x86
     TCP Connections Control Vector     0x87
     NetBIOS Name Exclusivity Control Vector 0x88
     MAC Address List Control Vector    0x89
     NetBIOS Name List Control Vector   0x8A
     Vendor Context Control Vector      0x8B
     Reserved for future use            0x8C - 0xCF
     Vendor Specific                    0xD0 - 0xFD

7.2. Control Vector Order and Continuity

   Since their contents can greatly affect the parsing of the Capabilities
   Exchange GDS Variable, the required control vectors must occur first and
   appear in the following order:  Vendor Id, DLSw Version Number, Initial
   Pacing Window, Supported SAP List. The remainder of the Control Vectors
   can occur in any order.

   Control Vectors that can be repeated within the same message (e.g. MAC
   Address List Control Vector and NetBIOS Name List Control Vector) are
   not necessarily adjacent.  It is advisable, but not required, to have
   the Exclusivity Control Vector occur prior to either of the above two
   vectors so that the use of the individual MAC addresses or NetBIOS names
   will be known prior to parsing them.

   Both the Vendor Context and Vendor Specific control vectors can be
   repeated.  If there are multiple instances of the Vendor Context control
   vector, the specified context remains in effect for all Vendor Specific
   control vectors until the next Vendor Context control vector is
   encountered in the Capabilities Exchange.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 63]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

7.3. Run-Time Capabilities Exchange

   Capabilities exchange always occurs when the SSP connection is started
   between two DLSw switches.  Capabilities Exchange can also occur at run-
   time, typically when a configuration change is made.

   Support for run-time Capabilities Exchange is optional.  If a node does
   not  support receiving/using Run-Time Capabilities Exchange and receives
   one, it should discard it  quietly (not send back a negative response).
   If a node supports receipt of  run-time capabilities, it should send a
   positive or negative response as  appropriate.  The receiver of a
   negative response to a run-time capabilities  message is not required to
   take down its TCP connections with the offended partner.

   Run-time Capabilities Exchange can consist of one or more of the
   following control vectors.  Note that the control vectors required at
   start-up are not present in a  run-time Capabilities Exchange.

        1. MAC Address Exclusivity CV,
        2. NetBIOS Name Exclusivity CV,
        3. MAC Address List CV,
        4. NetBIOS Name List CV,
        5. Supported SAP List CV,
        6. Vendor Context CV,
        7. Vendor Specific CVs

   A run-time capabilities exchange is a replacement operation.  As such,
   all pertinent MAC addresses and NetBIOS names must be specified in the
   run-time exchange. In addition, run-time changes in capabilities will
   not effect existing link station circuits.

7.4. Capabilities Exchange Filtering Responsibilities

   Recipients of the SAP, MAC, and NetBIOS lists are not required to
   actually use them to filter traffic, etc., either initially or at run-
   time.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 64]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

7.5. DLSw Capabilities Exchange Structured Subfields

   The Capabilities Exchange Subfields are listed in the table below and
   are described in the following sections:
   The following table summarizes the DLSw Capabilities Exchange Control
   Vectors.

         Required                      Allowed @
    ID   @ Startup  Length  Repeatable* Runtime  Order  Content
   ====  =========  ======  ==========  =======  =====  ===============
   0x81     Y        0x05        N         N       1    Vendor ID

   0x82     Y        0x04        N         N       2    DLSw Version

   0x83     Y        0x04        N         N       3    Initial pacing
                                                        window

   0x84     N      >=0x02        N         N       5+   Version String

   0x85     N        0x03        N         Y       5+   MAC Address
                                                        Exclusivity

   0x86     Y        0x12        N         Y       4    Supported SAP
                                                        List

   0x87     N        0x03        N         N       5+   TCP Connections

   0x88     N        0x03        N         Y       5+   NetBIOS Name
                                                        Exclusivity

   0x89     N        0x0E        Y         Y       5+   MAC Address
                                                        List

   0x8A     N      <=0x13        Y         Y       5+   NetBIOS Name
                                                        List

   0x8B     N        0x05        Y         Y       5+   Vendor Context

   0xD0     N       varies       Y         Y       5+   Vendor Specific

   *Note: "Repeatable" means a Control Vector is repeatable within a single
   message.

7.5.1. Vendor Id (0x81) Control Vector

   The Vendor Id control vector identifies the manufacturer's IEEE assigned
   Organizationally Unique Identifier (OUI) of the Data Link Switch sending
   the DLSw Capabilities Exchange.  The OUI is sent in non-canonical
   (Token-Ring) format.  This control vector is required and must be the
   first control vector.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 65]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1    0x05   Length of the Vendor Id structured
                          subfield

      1       1    0x81   key = 0x81  that identifies this as the
                          Vendor Id structured subfield

     2-4      3           the 3-byte Organizationally Unique
                          Identifier (OUI) for the vendor
                          (non-canonical format)

7.5.2. DLSw Version (0x82) Control Vector

   The DLSw Version control vector identifies the particular version of the
   DLSw standard supported by the sending Data Link Switch.  This control
   vector is required and must follow the Vendor Id Control Vector.

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1    0x04   Length of the Version String structured
                          subfield

      1       1    0x82   key = 0x82  that identifies this as the
                          DLSw Version structured subfield

      2       1           the hexadecimal value representing the
                          DLSw standard Version number of the
                          sending Data Link Switch.
                            0x01 (indicates version 1 - closed pages)

      3       1           the hexadecimal value representing the
                          DLSw standard Release number of the
                          sending Data Link Switch.
                            0x00 (indicates release 0)

7.5.3. Initial Pacing Window (0x83) Control Vector

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 66]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

   The Initial Pacing Window control vector specifies the initial value of
   the receive pacing window size for the sending Data Link Switch.  This
   control vector is required and must follow the DLSw Version Control
   Vector.

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1    0x04   Length of the Initial Pacing Window
                          structured subfield

      1       1    0x83   key = 0x83  that identifies this
                          as the Initial Pacing Window
                          structured subfield

     2-3      2           the pacing window size, specified
                          in byte normal form..

7.5.4. Version String (0x84) Control Vector

   The Version String control vector identifies the particular version
   number of the sending Data Link Switch.  The format of the actual
   version string is vendor-defined.  This control vector is optional.

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1    0xn    Length of the Version String
                          structured subfield

      1       1    0x84   key = 0x84  that identifies
                          this as the Version String
                          structured subfield

     2-n     n-2          the ASCII string that identifies
                          the software version for the
                          sending DLSw.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 67]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

7.5.5. MAC Address Exclusivity (0x85) Control Vector

   The MAC Address Exclusivity control vector identifies how the MAC
   Address List control vector data is to be interpreted.  Specifically,
   this control vector identifies whether the MAC addresses in the MAC
   Address List control vectors are the only ones accessible via the
   sending Data Link Switch.

   If a MAC Address List control vector is specified and the MAC Address
   Exclusivity control vector is missing, then the MAC addresses are not
   assumed to be the only ones accessible via this switch.

   A node may specify that it supports no local MAC addresses by including
   in its capabilities the MAC Address List Exclusivity CV (with byte 2 ==
   0x01), and not including any instances of the MAC Address List CV.

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1    0x03   Length of the Exclusivity structured
                          subfield

      1       1    0x85   key = 0x85 that identifies this as the
                          MAC address Exclusivity structured
                          subfield

      2       1           an indicator of the relationship of the
                          MAC addresses to the sending Data Link
                          Switch.
                            0x00     the MAC addresses specified in
                                     this Capabilities Exchange
                                     can be accessed via this
                                     switch but are not the
                                     exclusive set (i.e. other
                                     entities are accessible in
                                     addition to the ones specified)
                            0x01     the MAC addresses specified in
                                     this Capabilities Exchange
                                     are the only ones accessible
                                     via this switch.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 68]

RFC XXXX      DLSw: Switch-to-Switch Protocol  December 1994

7.5.6. SAP List Support (0x86) Control Vector

   The SAP List Support control vector identifies support for Logical Link
   Control SAPs (DSAPs and SSAPs) by the sending Data Link Switch.  This is
   used by the DLSw that sent the SAP List Support control vector to
   indicate which SAPs can be used to support SNA and optionally NetBIOS
   traffic.  This may be used by the DLSw that receives the SAP list to
   filter explorer traffic (TEST, XID, or NetBIOS UI frames) from the DLSw
   state machine.  For SNA, a DLSw should set bits for all SAP values (SSAP
   or DSAP) that may be used for SNA traffic.  For NetBIOS support, the bit
   for SAP 0xF0 should be set (if not supported then the same bit should be
   cleared).

   Each bit in the SAP control vector data field represents a SAP as
   defined below.  This vector is required and must follow the Initial
   Pacing Window Control Vector.

   Offset  Length  Value  Contents
   ------  ------  -----  --------
      0       1     0x12  Length of the Supported SAP List structured
                          subfield

      1       1     0x86  key = 0x86 that identifies this as the
                          Supported SAP List structured subfield

     2-17    16           the 16-byte bit vector describing all
                          even numbered SAPs enabled.

                          Each Bit within the 16 byte bit vector will
                          indicate whether an even numbered SAP is
                          enabled (b'1') or disabled (b'0').

                          Each Byte within the 16 byte bit vector
                          will be numbered from 0 - F. (Most
                          significant byte first).

                          Byte 0   1   2   3   ...   F
                               XX  XX  XX  XX  ...   XX

                          The bits in each byte indicate whether an
                          even numbered SAP is enabled (b'1') or
                          disabled (b'0'). (Most significant bit first)

                          Bits 7   6   5   4   ...   0
                          SAP  0   2   4   6   ...   E

                          By combining the byte label with the enabled
                          bits, all supported SAPs can be determined.

                          In the following diagram, 'n' would equal 0
                          through F depending on which byte was being
                          interpreted.

AIW DLSw Related Interest Group           DLSw version 0.16 [Page 69]